package org.flowers.unbeaten.base.entity;


import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import org.flowers.unbeaten.logging.aop.enums.BusinessType;
import org.flowers.unbeaten.logging.aop.enums.LoggingType;
import org.flowers.unbeaten.logging.aop.enums.RequestWay;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 日志
 * </p>
 *
 * @author RyanWang
 * @since 2021-07-16
 */
@Data
@TableName("log")
public class Log extends Model<Log> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "log_id", type = IdType.ASSIGN_ID)
    private String logId;

    /**
     * 标题
     */
    @TableField("title")
    private String title;

    /**
     * 描述
     */
    @TableField("description")
    private String description;

    /**
     * 请求方式
     */
    @TableField("request_way")
    private RequestWay requestWay;

    /**
     * 请求方法
     */
    @TableField("request_method")
    private String requestMethod;

    /**
     * 请求参数
     */
    @TableField("request_param")
    private String requestParam;

    /**
     * 操作人
     */
    @TableField("operator")
    private String operator;

    /**
     * 操作路径
     */
    @TableField("operate_url")
    private String operateUrl;

    /**
     * 操作地址
     */
    @TableField("operate_address")
    private String operateAddress;

    /**
     * 是否成功 0.失败 1.成功
     */
    @TableField("success")
    private Boolean success;

    /**
     * 异常信息
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 业务类型
     */
    @TableField("business_type")
    private BusinessType businessType;

    /**
     * 日志类型
     */
    @TableField("logging_type")
    private LoggingType loggingType;

    /**
     * 浏览器
     */
    @TableField("browser")
    private String browser;

    /**
     * 操作系统
     */
    @TableField("os")
    private String os;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    @Override
    protected Serializable pkVal() {
        return this.logId;
    }

}
